Instruction for Input data:
Input data shall be provided as *.json files including the following dictionaries:

1. Input file: "parameter_dict.json"
#####################################
{
	"parameter_dict": {
		"N_param":3,												#Number of cycles with varying parameters
		"U_topo_vec":[10,20,30],										#Array of uncertainty in the height value at each pixel with N_param entries in nm
		"U_lateral_vec":[0,0.1,0.2],										#Array of laterl displacement uncertainty with N_param entries in mm
		"N_sampel_pixel_x":100,										        #x-Topography size of the region of interest in pxl
   		"N_sampel_pixel_y":150, 										#y-Topography size of the region of interest in pxl
		"N_sample":200,												#Nr. of simulation cycles with random drawing
		"geometry":"circle",											#Aperture shape in simulation 'circle' or 'rectangle'
		"Aperture_sample_x":10.0,										#x-Clear aperture, set to the region of interest, on sample in mm
		"Aperture_sample_y":10.0,										#y-Clear aperture, set to the region of interest, on sample in mm
		"n_zi":[0,1,1,2,2,2,3,3,4,3,3,4,4,5,5,6,4,4,5,5,6,6,7,7,8,5,5,6,6,7,7,8,8,9,9,10,12],			#Zernike Fringe-Wyant Enumeration scheme
		"m_zi":[0,1,-1,0,2,-2,1,-1,0,3,-3,2,-2,1,-1,0,4,-4,3,-3,2,-2,1,-1,0,5,-5,4,-4,3,-3,2,-2,1,-1,0,0],	#Zernike Fringe-Wyant Enumeration scheme
		"P_custom":[0,0,0,0,10.0,0,70.0,40.0,60.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],	#Zernike coefficients in nm
		"sim_type":"noise",											#Simulation output type, changes the style of plotted data ["noise","lateral"]
		"show_graphics":"False",										#Set "True" for additional plots showing auxiliary Information
		"save_simulated_WFE":"False",										#Set True to save the reference wavefront as "Synthetic_Topodata.json"
		"run_Zernike_Demo":"False",										#Set True to receive a graphical output of the base Zernike polynomials			 	"measdata_filename":"Final_Topodata_Masterball_C07478.json"						#name of the *.json file to load, if not wanted leave empty ""
	}
}
#####################################

2. Input file: "measdata_filename.json"
The entries of this file will overwrite entries with the same Name,
which are specified in the "parameter_dict.json" file. So, if specified the measurement data
takes priority over the simulation parameters.
#####################################
measdata_dict.keys() --> dict_keys(['Topodata', 'x_axis', 'y_axis', 'geometry'])
'Topodata' -> ["N_sampel_pixel_y","N_sampel_pixel_x"] Matrix of topography height data. Consider that the Matrix is organized as
	      ["Nr. rows", "Nr. collumns"] and therefore is mapped to the size [y,x].
'x_axis'   -> ["N_sampel_pixel_x"] long vector containing the lateral positions in x-direction, employed to calculate "N_sampel_pixel_x" and "Aperture_sample_x" in the program
'y_axis'   -> ["N_sampel_pixel_y"] long vector containing the lateral positions in y-direction, employed to calculate "N_sampel_pixel_y" and "Aperture_sample_y" in the program
'geometry' -> #Aperture shape to be considered 'circle' or 'rectangle'

A suitable set of synthetic input data can be created and saved using the "ISO_14999-4_Zernike_Tool_15_01_2026.py" program
and setting the parameter "savedata"=True when calling the function generate_data().
#####################################

The Software was tested with:
-IDE Spyder 6.1.2 
-Visual Studio Code Version: 1.107.1

and Python 3.11.4 in a virtual environment containing the following packages:
Package                       Version
----------------------------- -----------
aiohappyeyeballs              2.4.4
aiohttp                       3.11.11
aiosignal                     1.3.2
alabaster                     0.7.13
arrow                         1.2.3
astroid                       3.3.8
asttokens                     2.2.1
asyncssh                      2.19.0
atomicwrites                  1.4.1
attrs                         23.1.0
autopep8                      2.0.4
Babel                         2.12.1
backcall                      0.2.0
backports.functools-lru-cache 1.6.5
bcrypt                        5.0.0
beautifulsoup4                4.12.2
binaryornot                   0.4.4
black                         25.1.0
bleach                        6.0.0
Brotli                        1.0.9
cached-property               1.5.2
cattrs                        24.1.2
certifi                       2025.11.12
cffi                          1.15.1
chardet                       5.1.0
charset-normalizer            3.1.0
click                         8.1.3
cloudpickle                   2.2.1
colorama                      0.4.6
comm                          0.1.3
contourpy                     1.1.0
cookiecutter                  2.1.1
cryptography                  41.0.1
cycler                        0.11.0
debugpy                       1.6.7
decorator                     5.1.1
defusedxml                    0.7.1
Deprecated                    1.2.18
diff-match-patch              20230430
dill                          0.3.9
docstring-to-markdown         0.12
docutils                      0.20.1
entrypoints                   0.4
exceptiongroup                1.3.0
executing                     1.2.0
fastjsonschema                2.17.1
flake8                        7.1.1
fonttools                     4.40.0
frozenlist                    1.5.0
gssapi                        1.8.2
h5py                          3.9.0
idna                          3.4
imagesize                     1.4.1
importlib-metadata            6.7.0
importlib-resources           5.12.0
inflection                    0.5.1
intervaltree                  3.1.0
ipykernel                     6.29.5
ipython                       9.7.0
ipython-genutils              0.2.0
ipython_pygments_lexers       1.1.1
isort                         5.12.0
jaraco.classes                3.2.3
jedi                          0.18.2
jellyfish                     1.0.0
Jinja2                        3.1.2
jinja2-time                   0.2.0
jsonschema                    4.17.3
jupyter_client                8.3.0
jupyter_core                  5.3.1
jupyterlab-pygments           0.2.2
kaleido                       0.2.1
keyring                       24.2.0
kiwisolver                    1.4.4
lazy-object-proxy             1.9.0
lsprotocol                    2025.0.0
MarkupSafe                    2.1.3
matplotlib                    3.7.1
matplotlib-inline             0.1.6
mccabe                        0.7.0
mistune                       3.0.0
more-itertools                9.1.0
multidict                     6.1.0
munkres                       1.1.4
mypy-extensions               1.0.0
narwhals                      1.26.0
nbclient                      0.8.0
nbconvert                     7.6.0
nbformat                      5.9.0
nest-asyncio                  1.5.6
numpy                         1.25.0
numpydoc                      1.5.0
packaging                     23.1
pandocfilters                 1.5.0
paramiko                      3.2.0
parso                         0.8.3
pathspec                      0.11.1
pexpect                       4.8.0
pickleshare                   0.7.5
Pillow                        10.0.0
pip                           23.1.2
pkgutil_resolve_name          1.3.10
platformdirs                  3.8.0
plotly                        6.0.0
pluggy                        1.2.0
ply                           3.11
pooch                         1.7.0
prompt_toolkit                3.0.52
propcache                     0.2.1
psutil                        5.9.5
ptyprocess                    0.7.0
pure-eval                     0.2.2
pycodestyle                   2.12.1
pyconify                      0.2
pycparser                     2.21
pydocstyle                    6.3.0
pyflakes                      3.2.0
PyGithub                      2.5.0
Pygments                      2.15.1
PyJWT                         2.10.1
pylint                        3.3.4
pylint-venv                   3.0.2
pyls-spyder                   0.4.0
PyNaCl                        1.5.0
pyOpenSSL                     23.2.0
pyparsing                     3.1.0
PyQt5                         5.15.7
PyQt5-sip                     12.11.0
PyQtWebEngine                 5.15.4
pyrsistent                    0.19.3
PySocks                       1.7.1
python-dateutil               2.8.2
python-lsp-black              2.0.0
python-lsp-jsonrpc            1.1.2
python-lsp-ruff               2.3.0
python-lsp-server             1.13.1
python-slugify                8.0.1
pytoolconfig                  1.2.5
pytz                          2023.3
pyuca                         1.2
pywin32                       304
pywin32-ctypes                0.2.2
PyYAML                        6.0
pyzmq                         25.1.0
QDarkStyle                    3.2.3
qstylizer                     0.2.2
QtAwesome                     1.4.0
qtconsole                     5.7.0
QtPy                          2.4.1
requests                      2.31.0
rope                          1.13.0
Rtree                         1.0.1
ruff                          0.14.5
scipy                         1.11.1
setuptools                    68.0.0
sip                           6.7.9
six                           1.16.0
snowballstemmer               2.2.0
sortedcontainers              2.4.0
soupsieve                     2.3.2.post1
Sphinx                        7.0.1
sphinxcontrib-applehelp       1.0.4
sphinxcontrib-devhelp         1.0.2
sphinxcontrib-htmlhelp        2.0.1
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.3
sphinxcontrib-serializinghtml 1.1.5
spyder                        6.1.0
spyder-kernels                3.1.1
stack-data                    0.6.2
superqt                       0.7.0
text-unidecode                1.3
textdistance                  4.5.0
three-merge                   0.1.1
tinycss2                      1.2.1
toml                          0.10.2
tomli                         2.0.1
tomlkit                       0.11.8
tornado                       6.3.2
traitlets                     5.14.3
typing_extensions             4.7.1
ujson                         5.7.0
Unidecode                     1.3.6
urllib3                       2.0.3
watchdog                      3.0.0
wcwidth                       0.2.6
webencodings                  0.5.1
whatthepatch                  1.0.5
wheel                         0.40.0
win-inet-pton                 1.1.0
wrapt                         1.15.0
yapf                          0.33.0
yarl                          1.18.3
zipp                          3.15.0

In the Spyder Settings -> IPython-Konsole -> Plotting: Matplotlib support is activated, the grafic backend is selected automatically
